Data processing systems are routinely used to deliver information in interactive applications (wherein the information is typically displayed on a monitor in real-time). Particularly, in a system with distributed architecture the required information is provided by one or more remote source computers. In this case, the information is typically collected on a central server computer (from the different source computers); multiple client computers can then download the information from the server computer when it is necessary. A typical example is a monitoring application (such as the “IBM Tivoli Monitoring, or ITM”), wherein monitoring data indicative of the performance of different managed computers is measured on each one of them; the monitoring data is then collected on the server computer, where it is available for downloading by one or more operators. This allows the operators to track the health and performance of the system; for example, the operators can detect any critical condition of the managed computers. In this case, they typically download further information for analyzing the critical condition more in detail and possibly identifying its cause (so as to take corresponding correction actions).
In this context, it is generally untenable to trigger the collection of the information from the source computers synchronously (i.e., when a corresponding request is received from every client computer). Indeed, this approach involves a very high response time for the client computers (since each request cannot be satisfied until the collection of the requested information has been completed).
A solution known in the art is of collecting the information on the server computer periodically, and then storing it into a cache memory. As a result, the information is immediately available on the server computer when it is requested; moreover, next requests for the same information at short intervals can be satisfied by the server computer directly without requiring multiple collections from the corresponding source computers.
A critical aspect of the above-described solution is the choice of a refresh frequency of the information on the server computer. Indeed, a too low refresh frequency would impair the currency of the information that is delivered to the client computers (since the client computers receive the information as it was when collected from the source computers ahead of the actual request). Conversely, a too high refresh frequency would overload the system, with a detrimental impact on its overall performance.
Another problem arises when more source computers try to upload information onto the server computer at the same time. As a consequence, contention problems on the server computer can occur. This adversely affects the response time of the client computers (especially when the processing time required for the collection of the information is not negligible, and then the server computer might remain busy for a quite long period).